//逻辑控制

import java.sql.SQLOutput;
import java.util.Random;
import java.util.Scanner;

public class Test {
    public static void main(String[] args) {
/*        int x = 20;
        int y = 10;
        if (x == 10)
        if(y == 10)
            System.out.println("aaa");
        else
            System.out.println("bbb");*/

        //分支结构
        //if语句
        //if(布尔表达式)
        //     //语句
        //}
        //注意：if括号内必须是布尔表达式
//        int score = 20;
//        if (score > 50){
//            System.out.println("good");
//        }else {
//            System.out.println("not good");
//        }
//        int i = 5;
//        if(i == 1){
//            System.out.println("i == 1");
//        } else if (i == 2) {
//            System.out.println("i == 2");
//        }else {
//            System.out.println("i == " + i);
//        }
//        int score = 100;
//        if(score >= 90) {
//            System.out.println("优秀");
//        } else if (score >= 80) {
//            System.out.println("良好");
//        } else if (score >= 70) {
//            System.out.println("中等");
//        } else if (score >= 60) {
//            System.out.println("及格");
//        } else if (score >= 0) {
//            System.out.println("不及格");
//        }else {
//            System.out.println("数据错误");
//        }


        //练习：判断一个数字是奇数还是偶数
//        int i = 2;
//        if (i % 2 == 0){
//            System.out.println("偶数");
//        }else {
//            System.out.println("奇数");
//        }

        //练习：判断一个数是正数负数还是0
//        int i =-4;
//        if (i > 0){
//            System.out.println("正数");
//        } else if (i < 0) {
//            System.out.println("负数");
//        }else {
//            System.out.println("0");
//        }

        //练习：判断一个年份是否是闰年

//        for (int year = 1000; year <= 2000; year++){
//            if (year % 100 == 0){
//                if (year % 400 == 0){
//                    System.out.println(year + "是闰年");
//                }
//            } else if (year % 4 == 0) {
//                System.out.println(year + "是闰年");
//            }
//        }

        //switch语句
        //注意：
        //1.switch的括号内不支持 float double long boolean 类型
        //支持基本类型：byte char short int
        //引用类型：String常量串 枚举类型

//        int a = 1;
//        switch (a){
//            case 1:
//                System.out.println("1");
//                break;
//            case 2:
//                System.out.println("2");
//                break;
//            case 3:
//                System.out.println("3");
//                break;
//            default:
//                System.out.println("重新输入");
//                break;
//        }

//        String str = "hello";
//        switch (str){
//            case "nihao":
//                System.out.println("China");
//                break;
//            case "hello":
//                System.out.println("forign");
//                break;
//
//        }

        //循环结构
        //注意while括号里面的必须是布尔表达式

        //打印1 - 100的数字
//        int num = 1;
//        while (num <= 100){
//            System.out.println(num);
//            num++;
//            //while(true / false) //不能仅仅是一个变量
//        }

        //计算 1 - 100 的和
//        int n = 1;
//        int ret = 0;
//        while (n <= 100){
//            ret += n;
//            n++;
//        }
//        System.out.println("ret = " + ret);

        //计算 5 的阶乘
//        int num = 1;
//        int ret = 1;
//        while (num <= 5){
//            ret *= num;
//            num++;
//        }
//        System.out.println("阶乘 = " + ret);

        //计算 1! + 2! + 3! + 4! + 5!
//        int i = 1;
//        int sum = 0;
//        while (i <= 5){
//            int j = 1;
//            int ret = 1;
//            while (j <= i){
//                ret *= j;
//                j++;
//            }
//            sum += ret;
//            i++;
//        }
//        System.out.println("sum = " + sum);

        //break 是提前结束循环 剩下多少趟都不会继续执行
//        int n = 1;
//        while (n <= 5){
//            if (n == 3){
//                break;
//            }
//            System.out.println(n);
//            n++;
//        }

        //找到100 - 200 中 第一个3的倍数
//        int num = 100;
//        while (num <= 200){
//            if (num % 3 == 0){
//                System.out.println("找到了，第一个3的倍数是 " + num );
//                break;
//            }
//            num++;
//        }


        //continue 的功能是跳过这次循环，立即进入下次循环
//        int num = 1;
//        while (num <= 20){
//            if (num == 4){
////                num++; //如果不加这个num会导致死循环，且这个num++必须在continue前面
//                continue;
//            }
//            System.out.println(num);
//            num++;
//        }

        //找到100 -200 之间既能被3整除，又能被4整除的数字，要求使用continue
//        int i =100;
//        while (i <= 200){
//            if (i % 12 != 0){
//                i++;
//                continue;
//            }
//            System.out.println(i);
//            i++;
//        }

         //for循环和while类似

        //dowhile
//        int num = 1;
//        do {
//            System.out.println(num);
//        }while(num != 1);

        //从键盘输入
//        Scanner sc = new Scanner(System.in);//需要导包

//        System.out.println("输入一个年龄：");
//        int age = sc.nextInt();//读入一个int类型的整数
//        System.out.println("年龄" + age);
//
//        sc.nextLine();//注意回车 //读走空格
//
//        System.out.println("输入名字 ：");
//        String name = sc.nextLine();//nextLine 读入一行
//        //并且nextKLine会读入上一次的空格 所以需要加一个 sc.nextLine()读走上一行的空格
//        System.out.println("名字是" + name);
//
//        System.out.println("输入你的工资");
//        float salary = sc.nextFloat();
//        System.out.println("工资是" + salary);
//
//        sc.close();
//        //可以认为scan是一个资源，使用后要close

        //使用Scanner循环读取N个数据

//        Scanner sc = new Scanner(System.in);
//        while (sc.hasNext()) {//ctrl + d结束 / ctrl + z（不同系统不同）
//            int age = sc.nextInt();
//            System.out.println(age);
//        }

        //猜数字游戏
//        Scanner scanner = new Scanner(System.in);
//        Random random = new Random();
//        int randNum = random.nextInt(101);
//
//        while (true){
//            System.out.println("请输入要猜的数字");
//            int num = scanner.nextInt();
//            if (num < randNum){
//                System.out.println("小");
//            }else if (num == randNum){
//                System.out.println("right");
//                break;
//            }else{
//                System.out.println("大了");
//            }
//        }

        //判断一个数字是否是素数
//        Scanner scanner = new Scanner(System.in);
//        System.out.println("请输入要判断的数字");
//        int num = scanner.nextInt();
//        int i = 2;
//        for (i = 2; i <= Math.sqrt(num); i++){
//            if (num % i == 0){
//                break;
//            }
//        }
//        //有两种情况出循环
//        //1.遍历完之后出循环
//        //2.break出循环
//        if (i > Math.sqrt(num)){
//            System.out.println(num + "是素数");
//        }
//        else{
//            System.out.println(num + "不是素数");
//        }


        //打印 1 - 100之间所有的素数
//        int n = 2;
//        for (n = 2; n <= 100; n++){
//            int i = 1;
//            for (i = 2; i < Math.sqrt(n); i++){
//                if (n % i == 0){
//                    break;
//                }
//            }
//            if (i > Math.sqrt(n)){
//                System.out.println(n + "是素数");
//            }
//        }


        //输出乘法口诀表
//        int i = 1;
//        for (i = 1; i <= 9; i++){
//            int j = 1;
//            for (j = 1; j <= i; j++){
//                System.out.printf("%d * %d = %d ", i, j , i * j);
//            }
//            System.out.println();
//        }

        //求两个正整数的最大公约数
        //欧几里得算法
//
//        int num1 = 36;
//        int num2 = 24;
//        while (num2 != 0){
//            int tmp = num2;
//            num2 = num1 % num2;
//            num1 = tmp;
//        }
//        int ret = num1;
//        System.out.println(num1);

        //水仙花数练习
//        for (int i = 1; i < 999999; i++){
//            //i = 123
//            int count = 0;//记录位数
//            int tmp = i;
//            //计算位数
//            while (tmp != 0){
//                tmp /= 10;
//                count++;
//            }
//            //判断是否满足水仙花数
//            tmp = i;
//            int sum = 0;
//            while (tmp != 0){
//                //sum = sum + Math.pow(tmp %10, count);//err
//                sum += Math.pow(tmp % 10, count);//注意：Math.pow计算类型为double
//                //pow：计算 tmp%10 ^ count
//                tmp /= 10;
//            }
//            if (sum == i){
//                System.out.println(i);
//            }
//        }


        //计算参数二进制中1的个数
        //比如 15 0000 1111 四个1
//        int n = 15;
//        int count = 0;
//        while (n != 0){
//            n = n & (n -1);
//            count++;
//        }
//        System.out.println(count);

        //获取一个数二进制序列中的所有偶数位和奇数位，分别输出二进制序列
//        int num = 15;
//
//        System.out.println("偶数位的二进制序列");
//        for (int i = 31; i >= 0; i -= 2){
//            int bit = (num >> i) & 1;
//            System.out.print(bit);
//        }
//        System.out.println();
//        System.out.println("奇数位的二进制序列");
//        for (int i = 30; i >= 0; i -= 2){
//            int bit = (num >> i) & 1;
//            System.out.print(bit);
//        }

// 00000000 00000000 00000000 00001111
                               // 000
// 00000000 00000000 00000000 00000000
        //&
// 00000000 00000000 00000000 00000001
// 00000000 00000000 00000000 00000000
//        int num = 15;
//        System.out.print("偶数位二进制序列：");
//        for (int i = 31; i >= 0; i --){
//            if(i % 2 != 0){//i是移动的位，如果移动i是偶数，则该位是奇数位
//                int bit = (num >> i) & 1;
//                System.out.print(bit);
//            } else{
//                System.out.print(0);
//            }
//        }
//        System.out.println();
//        System.out.print("奇数位二进制序列：");
//        for (int i = 31; i >= 0; i --){
//            if(i % 2 != 0){
//                System.out.print(0);
//            } else{
//                int bit = (num >> i) & 1;
//                System.out.print(bit);
//            }
//        }












    }
}
